package com.sc.nft.service;

import com.sc.nft.dto.TradePoolConsumerDTO;
import com.sc.nft.entity.DaoShareConfig;
import com.sc.nft.entity.DisassemblyHistoryLog;
import com.sc.nft.entity.Order;
import com.sc.nft.entity.SecondOrder;
import com.sc.nft.entity.dto.SettleAmountDTO;

import java.util.List;

public interface IncomeService {

    /**
     * 首发直推收益
     *
     */
    void firstDirectPushIncome(Order order);

    /**
     * 二级直推收益
     * @param order
     */
    void secondDirectPushIncome(SecondOrder order);

    void secondDirectPushIncomeForSplit(SecondOrder order, List<SettleAmountDTO> amountDTOS);

    /**
     * 交易池分红
     * @param tradingPoolOrder 交易池订单
     */
    void tradePoolIncome(TradePoolConsumerDTO tradingPoolOrder);

    /**
     * 贡献奖发放
     */
    void cultivationAward(DaoShareConfig daoShareConfig, String yearWeek);

    /**
     * 组织贡献奖发放
     * @param daoShareConfig
     * @param yearWeek
     */
    void contributionAward(DaoShareConfig daoShareConfig, String yearWeek);


    /**
     * 拆配收益发放
     *
     * @param disassemblyHistoryLog
     */
    void disassemblyIncome(DisassemblyHistoryLog disassemblyHistoryLog);

    /**
     * 服务中心分红
     * @param daoShareConfig
     * @param yearWeek
     */
    void serviceCenterDividends(DaoShareConfig daoShareConfig, String yearWeek);

    /**
     * 服务中心平级
     * @param daoShareConfig
     * @param yearWeek
     */
    void serviceCenterLevel(DaoShareConfig daoShareConfig, String yearWeek);

    /**
     * 社区网点
     * @param daoShareConfig
     * @param yearWeek
     */
    void workRoomDividends(DaoShareConfig daoShareConfig, String yearWeek);


    /**
     * 持仓奖
     * @param daoShareConfig 分红配置
     * @param yearWeek 代表哪一周
     */
    void positionReward(DaoShareConfig daoShareConfig, String yearWeek);
}
